﻿using System;
using System.Linq;
using System.Text;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using System.Collections.Generic;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation;
using Tida.Module.BusinessObjects.客户管理;
using Tida.Module.BusinessObjects.研发中心;
using Tida.Module.BusinessObjects.系统管理;

namespace Tida.Module.BusinessObjects.产品需求
{
    [NavigationItem("市场销售")]
    [XafDisplayName("需求申请单")]
    [DefaultProperty("客户名称")]
    [DefaultClassOptions]
    public class 报价需求单 : 系统管理.BaseInf
    { // Inherit from a different class to provide a custom primary key, concurrency and deletion behavior, etc. (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument113146.aspx).
        public 报价需求单(Session session)
            : base(session)
        {
        }
        public override void AfterConstruction()
        {
            base.AfterConstruction();
            this.编号 = Tools.SerNumber.Number("XQ");
            var cc = new XPQuery<状态>(this.Session);
            var oo = cc.Where(p => p.类型 == "草拟状态").FirstOrDefault();
            this.状态 = oo;
            // Place your initialization code here (https://documentation.devexpress.com/eXpressAppFramework/CustomDocument112834.aspx).

            base.AfterConstruction();

           


        }

        protected override void OnSaving()
        {
            if (Session.ObjectLayer is DevExpress.ExpressApp.Security.ClientServer.SecuredSessionObjectLayer)
            {


                // Client  
            }
            else
            {


                if (状态.类型 == "完成")
                {

                    CreatePriceConfirm();



                }


                // Server  


            }


            base.OnSaving();
        }



        public  void  CreatePriceConfirm()
        {
            设计输入评审 ps = new 设计输入评审(this.Session);
            ps.客户 = this.客户信息;
            ps.含不含光源 = this.是否含光源;
            ps.年预估订单数量 = this.年预估订单产量;
            ps.首批订单数量 = this.首批订单量;
            ps.首次样品 = this.首次样品;
            ps.客户推广样品 = this.客户推广样品;
            ps.首批出货时间 = this.首批出货时间;

            ps.开关位置 = this.开关位置;
            ps.开关颜色 = this.开关颜色;
            ps.开关种类 = this.开关种类;
            ps.光源寿命 = this.光源寿命;
            ps.含不含光源 = this.是否含光源;
            ps.外露电线长度 = this.外露电线长度;
            ps.外露电线颜色 = this.外露电线颜色;
            ps.明流 = this.流明;
            ps.色容差 = this.色容差;
            ps.色温 = this.色温;
            ps.Led灯珠信息 = this.Led灯珠信息;
            ps.品质需求 = this.品质要求;
            ps.光源安装类别 = this.光源安装类别;
            ps.外露电线种类 = this.外露电线种类;
            ps.显止 = this.显止;
            ps.RGB = this.RGB;
            ps.安规证书 = this.安规证书;
            ps.能效证书 = this.能效证书;
            ps.EMC或FCC = this.EMC或者FCC;
            ps.保质期 = this.保质期;
            ps.光源形状 = this.光源形状;
            ps.是否调光 = this.是否调光;
            ps.相关需求清单 = this;
            this.批核= Session.GetObjectByKey<Sys_User>(SecuritySystem.CurrentUserId);




        }
        // Fields...


        #region 证书信息
        private Sys_User _批核;
        private string _编号;
        private 状态 _状态;
        private DateTime _首批出货时间;
        private string _RGB;
        private string _显止;
        private 光源安装类别 _光源安装类别;
        private string _ROSH加州65;
        private string _EMC或者FCC;
        private 客户信息 _客户信息;
        private string _保质期;
        private string _能效证书;
        private string _安规证书;

        [ModelDefault("AllowEdit", "false")]
        public Sys_User 批核
        {
            get
            {
                return _批核;
            }
            set
            {
                SetPropertyValue("批核", ref _批核, value);
            }
        }


        [ModelDefault("AllowEdit", "false")]
        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 编号
        {
            get
            {
                return _编号;
            }
            set
            {
                SetPropertyValue("编号", ref _编号, value);
            }
        }


        [ModelDefault("AllowEdit", "false")]
        public 状态 状态
        {
            get
            {
                return _状态;
            }
            set
            {
                SetPropertyValue("状态", ref _状态, value);
            }
        }


        public DateTime 首批出货时间
        {
            get
            {
                return _首批出货时间;
            }
            set
            {
                SetPropertyValue("首批出货时间", ref _首批出货时间, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string RGB
        {
            get
            {
                return _RGB;
            }
            set
            {
                SetPropertyValue("RGB", ref _RGB, value);
            }
        }
        #endregion

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 显止
        {
            get
            {
                return _显止;
            }
            set
            {
                SetPropertyValue("显止", ref _显止, value);
            }
        }
        public 光源安装类别 光源安装类别
        {
            get
            {
                return _光源安装类别;
            }
            set
            {
                SetPropertyValue("光源安装类别", ref _光源安装类别, value);
            }
        }



        #region 光源信息
        private bool _是否含光源;
        private string _光源形状;
        private string _光源寿命;
        private string _Led灯珠信息;
        private string _色容差;
        private string _显指;
        private string _流明;
        private string _色温;
        private bool _是否调光;


        #endregion


        #region 电线信息
        private string _外露电线颜色;
        private string _外露电线长度;
        private 电线类型 _外露电线种类;




        #endregion

        #region 开关
        private bool _是不是调光;
        private string _开关颜色;
        private string _开关位置;
        private 开关类型 _开关种类;


        #endregion


        #region 常规信息
        private string _品质要求;

        private string _样品是否齐全含包装;
        private string _表处;
        private string _材质;
        private string _尺寸;
        #endregion


        #region 商务信息
        private DateTime _首次出货时间;
        private DateTime _客户推广样品;
        private string _产品市场;
        private decimal _摸费摊付;
        private decimal _样品费分摊;
        private int _年预估订单产量;
        private DateTime _报价需求时间;
        private decimal _目标价格;
        private DateTime _首次样品;
        private decimal _估计;
        private int _首批订单量;
        #endregion


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string ROSH加州65
        {
            get
            {
                return _ROSH加州65;
            }
            set
            {
                SetPropertyValue("ROSH加州65", ref _ROSH加州65, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string EMC或者FCC
        {
            get
            {
                return _EMC或者FCC;
            }
            set
            {
                SetPropertyValue("EMC或者FCC", ref _EMC或者FCC, value);
            }
        }

        public bool 是否调光
        {
            get
            {
                return _是否调光;
            }
            set
            {
                SetPropertyValue("是否调光", ref _是否调光, value);
            }
        }



        public 电线类型 外露电线种类
        {
            get
            {
                return _外露电线种类;
            }
            set
            {
                SetPropertyValue("外露电线种类", ref _外露电线种类, value);
            }
        }


        public 开关类型 开关种类
        {
            get
            {
                return _开关种类;
            }
            set
            {
                SetPropertyValue("开关种类", ref _开关种类, value);
            }
        }




        public int 首批订单量
        {
            get
            {
                return _首批订单量;
            }
            set
            {
                SetPropertyValue("首批订单量", ref _首批订单量, value);
            }
        }


        public decimal 估计
        {
            get
            {
                return _估计;
            }
            set
            {
                SetPropertyValue("估计", ref _估计, value);
            }
        }

     


        public DateTime 首次样品
        {
            get
            {
                return _首次样品;
            }
            set
            {
                SetPropertyValue("首次样品", ref _首次样品, value);
            }
        }


        public decimal 目标价格
        {
            get
            {
                return _目标价格;
            }
            set
            {
                SetPropertyValue("目标价格", ref _目标价格, value);
            }
        }


        public DateTime 报价需求时间
        {
            get
            {
                return _报价需求时间;
            }
            set
            {
                SetPropertyValue("报价需求时间", ref _报价需求时间, value);
            }
        }


        public int 年预估订单产量
        {
            get
            {
                return _年预估订单产量;
            }
            set
            {
                SetPropertyValue("年预估订单产量", ref _年预估订单产量, value);
            }
        }


        public decimal 样品费分摊
        {
            get
            {
                return _样品费分摊;
            }
            set
            {
                SetPropertyValue("样品费分摊", ref _样品费分摊, value);
            }
        }


        public decimal 摸费摊付
        {
            get
            {
                return _摸费摊付;
            }
            set
            {
                SetPropertyValue("摸费摊付", ref _摸费摊付, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 产品市场
        {
            get
            {
                return _产品市场;
            }
            set
            {
                SetPropertyValue("产品市场", ref _产品市场, value);
            }
        }

        public DateTime 客户推广样品
        {
            get
            {
                return _客户推广样品;
            }
            set
            {
                SetPropertyValue("客户推广样品", ref _客户推广样品, value);
            }
        }



        public DateTime 首次出货时间
        {
            get
            {
                return _首次出货时间;
            }
            set
            {
                SetPropertyValue("首次出货时间", ref _首次出货时间, value);
            }
        }
    


    [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 尺寸
        {
            get
            {
                return _尺寸;
            }
            set
            {
                SetPropertyValue("尺寸", ref _尺寸, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 材质
        {
            get
            {
                return _材质;
            }
            set
            {
                SetPropertyValue("材质", ref _材质, value);
            }
        }


   
        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 表处
        {
            get
            {
                return _表处;
            }
            set
            {
                SetPropertyValue("表处", ref _表处, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 样品是否齐全含包装
        {
            get
            {
                return _样品是否齐全含包装;
            }
            set
            {
                SetPropertyValue("样品是否齐全含包装", ref _样品是否齐全含包装, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 品质要求
        {
            get
            {
                return _品质要求;
            }
            set
            {
                SetPropertyValue("品质要求", ref _品质要求, value);
            }
        }
        


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 开关位置
        {
            get
            {
                return _开关位置;
            }
            set
            {
                SetPropertyValue("开关位置", ref _开关位置, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 开关颜色
        {
            get
            {
                return _开关颜色;
            }
            set
            {
                SetPropertyValue("开关颜色", ref _开关颜色, value);
            }
        }


        public bool 是不是调光
        {
            get
            {
                return _是不是调光;
            }
            set
            {
                SetPropertyValue("是不是调光", ref _是不是调光, value);
            }
        }


        public bool 是否含光源
        {
            get
            {
                return _是否含光源;
            }
            set
            {
                SetPropertyValue("是否含光源", ref _是否含光源, value);
            }
        }


    
        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 光源形状
        {
            get
            {
                return _光源形状;
            }
            set
            {
                SetPropertyValue("光源形状", ref _光源形状, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 外露电线长度
        {
            get
            {
                return _外露电线长度;
            }
            set
            {
                SetPropertyValue("外露电线长度", ref _外露电线长度, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 外露电线颜色
        {
            get
            {
                return _外露电线颜色;
            }
            set
            {
                SetPropertyValue("外露电线颜色", ref _外露电线颜色, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 色温
        {
            get
            {
                return _色温;
            }
            set
            {
                SetPropertyValue("色温", ref _色温, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 流明
        {
            get
            {
                return _流明;
            }
            set
            {
                SetPropertyValue("流明", ref _流明, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 显指
        {
            get
            {
                return _显指;
            }
            set
            {
                SetPropertyValue("显指", ref _显指, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 色容差
        {
            get
            {
                return _色容差;
            }
            set
            {
                SetPropertyValue("色容差", ref _色容差, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string  Led灯珠信息
        {
            get
            {
                return _Led灯珠信息;
            }
            set
            {
                SetPropertyValue("Led灯珠信息", ref _Led灯珠信息, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 光源寿命
        {
            get
            {
                return _光源寿命;
            }
            set
            {
                SetPropertyValue("光源寿命", ref _光源寿命, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 安规证书
        {
            get
            {
                return _安规证书;
            }
            set
            {
                SetPropertyValue("安规证书", ref _安规证书, value);
            }
        }


        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 能效证书
        {
            get
            {
                return _能效证书;
            }
            set
            {
                SetPropertyValue("能效证书", ref _能效证书, value);
            }
        }

        [Size(SizeAttribute.DefaultStringMappingFieldSize)]
        public string 保质期
        {
            get
            {
                return _保质期;
            }
            set
            {
                SetPropertyValue("保质期", ref _保质期, value);
            }
        }

        [Association("客户信息-报价需求单")]
        public 客户信息 客户信息
        {
            get
            {
                return _客户信息;
            }
            set
            {
                SetPropertyValue("客户信息", ref _客户信息, value);
            }
        }
    }
}